

n= 4513379923709898531820421781270021976685406351585516970767217643326542111873477541638312477519381819042946187327649485313885067271629396678402257138127019
c1= 813476077652310513563952602104693825019976729689161860104436985586052748513
c2= 36196630570055523561853728164755672876532668640198751556631265821889333964706
e = 65537

import libnum
import gmpy2

p1,s=gmpy2.iroot(n,2)
q=gmpy2.next_prime(p1)
p=n//q
print(n==p*q)

# c11=c1*(p-1)!%p
# c11=c1*(p-2)!*(p-1)%p
#c11//(p-1)=c1*(p-2)!%p
#c11*(p-1)^-1%p=c1*(p-2)!%p

#c11*inmod(p-1,p)%p=c1*(p-2)!%p
#c11*inmod(p-1,p)%p=c1 #(p-2)!%p=1
c1=c1*libnum.invmod(-1,p)%p
c2=c2*libnum.invmod(-1,q)%q

d1=libnum.invmod(e,p-1)
d2=libnum.invmod(e,q-1)
m1=pow(c1,d1,p)
m2=pow(c2,d2,q)
m=libnum.solve_crt([m1,m2],[p,q])
print(libnum.n2s(int(m)))
